package com.joker.aigc.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.joker.aigc.domain.dto.UserDto;
import com.joker.aigc.domain.dto.UserQueryCriteria;
import com.joker.aigc.domain.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.joker.aigc.domain.vo.UserVo;

import java.util.Date;
import java.util.List;

/**
 * @author 20346
 * @description 针对表【user】的数据库操作Service
 * @createDate 2023-12-17 11:26:08
 */
public interface UserService extends IService<User> {


    Boolean isOnline(Long uid);

    /**
     * 返回分页的用户信息
     * @param userQueryCriteria 查询用户的DTO
     * @return 分页的用户信息
     */
    Page<UserVo> queryAll(UserQueryCriteria userQueryCriteria);


    /**
     * 更新用户信息
     * @param userDto 用户信息
     */
    void updateUser(UserDto userDto);


    void deleteUser(Long uid);

    UserVo queryById(Long uid);


    Integer getOnlineCount(List<Long> memberUidList);

    /**
     * 获取整体在线人数
     * @return 返回系统全部的在线人数
     */
    Integer getOnlineNum();


    void addOnline(Long uid);

    /**
     * 移除 缓存信息
     * @param uid
     */
    void removeOnline(Long uid);

    /**
     * 移除
     * @param uid
     * @param optTime
     */
    void offline(Long uid, Date optTime);


}
